package com.wicket.okrcomponent.integration.dto;

import com.wicket.okrcomponent.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc ConfItemResultDto
 * @使用场景
 */
@Data
public class ConfItemResultDto extends BaseDto implements Serializable {

  /**
   * 选项关系ID
   */
  @NotNull(message = "选项关系ID 不能为空")
  @ApiModelProperty("选项关系ID ")
  private String confOptionRshipId;

  /**
   * 答案结果值
   */
  @NotNull(message = "答案结果值不能为空")
  @ApiModelProperty("答案结果值")
  private String endValue;

  /**
   * 答案选项类型 RADIO:单选型 MULTIPLE:多选型 TEXT:填空型
   */
  @NotNull(message = "答案选项类型不能为空")
  @ApiModelProperty("答案选项类型")
  private String optionType;

  /**
   * 答案结果类型 NUMERIC:数值 TEXT:文本 DATETIME:日期 TIME:时间
   */
  @ApiModelProperty("答案结果类型")
  private String resultType;

  /**
   * 答案排序
   */
  @NotNull(message = "答案排序不能为空")
  @ApiModelProperty("答案排序")
  private Long confOptionSortNum;

  /**
   * 选项标识
   */
  @NotNull(message = "选项标识不能为空")
  @ApiModelProperty("选项标识")
  private String confOptionCode;

  /**
   * 选项名称
   */
  @NotNull(message = "选项名称不能为空")
  @ApiModelProperty("选项名称")
  private String confOptionName;

  /**
   * 配置方案ID
   */
  @ApiModelProperty("配置方案ID")
  private String confSchemeId;

  /**
   * 配置方案标识
   */
  @ApiModelProperty("配置方案标识")
  private String confSchemeCode;

  /**
   * 扩展字段1（非必填）
   */
  @ApiModelProperty("扩展字段1 （非必填）")
  private String extensionField1;

  /**
   * 扩展字段2（非必填）
   */
  @ApiModelProperty("扩展字段2（非必填）")
  private String extensionField2;

  /**
   * 扩展字段3（非必填）
   */
  @ApiModelProperty("扩展字段3 （非必填）")
  private String extensionField3;

  /**
   * 扩展字段4（非必填）
   */
  @ApiModelProperty("扩展字段4（非必填）")
  private String extensionField4;

  /**
   * 答案商业位置（非必填） MENUS:菜单 TOP_FIND:发现上 FIND:发现 TOP_CONF_CENTER:配置中心上 CONF_CENTER:配置中心
   */
  @ApiModelProperty("答案商业位置（非必填）")
  private String optionThrowPlace;

  /**
   * 答案ID
   */
  @ApiModelProperty("答案ID")
  private String optionResultId;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    ConfItemResultDto that = (ConfItemResultDto) o;
    return (
      confOptionRshipId == that.confOptionRshipId &&
      endValue == that.endValue &&
      optionType == that.optionType &&
      resultType == that.resultType &&
      confOptionSortNum == that.confOptionSortNum &&
      confOptionCode == that.confOptionCode &&
      confOptionName == that.confOptionName &&
      confSchemeId == that.confSchemeId &&
      confSchemeCode == that.confSchemeCode &&
      extensionField1 == that.extensionField1 &&
      extensionField2 == that.extensionField2 &&
      extensionField3 == that.extensionField3 &&
      extensionField4 == that.extensionField4 &&
      optionThrowPlace == that.optionThrowPlace &&
      optionResultId == that.optionResultId
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      confOptionRshipId,
      endValue,
      optionType,
      resultType,
      confOptionSortNum,
      confOptionCode,
      confOptionName,
      confSchemeId,
      confSchemeCode,
      extensionField1,
      extensionField2,
      extensionField3,
      extensionField4,
      optionThrowPlace,
      optionResultId
    );
  }

}
